﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TakbisBilgiSorgu_v1.wsUygulamaYetkiServis;
using System.Configuration;

namespace TakbisBilgiSorgu_v1
{
    public partial class YFGrupYetki : System.Web.UI.Page
    {
        UygulamaYetkiServis uygulamaYetkiServis = new UygulamaYetkiServis();

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (((Kullanici)Session["kullanici"]) == null)
                    {
                        MesajVer(ConfigurationManager.AppSettings["GirisYapmalisinizMesaji"].ToString());
                        Response.Redirect("Login.aspx");
                    }
                    else
                    {
                        if (uygulamaYetkiServis.GrupYetkiVarMiKontrolYeni(((Kullanici)Session["kullanici"]).GrupID, "YFGrupYetkiIslemleri.aspx") && ((Kullanici)Session["kullanici"]).AktifMi == 1)
                        {
                            GrupYetkiTablosuDoldur();
                            KutucuklariDisableYap();
                            GrupCombosuDoldur();
                            FonksiyonCombosuDoldur();
                            Session["GuncellenenGrupYetki"] = null;
                        }
                        else
                        {
                            MesajVer(ConfigurationManager.AppSettings["YetkinizYokMesaji"].ToString());
                            Response.Redirect("AnaSayfa.aspx");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["YetkiServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void GrupYetkiTablosuDoldur()
        {
            Session["GrupYetki"] = uygulamaYetkiServis.GrupYetkiGetir().ToList();
            if (Session["GrupYetki"] != null)
            {
                gvGrupYetki.DataSource = Session["GrupYetki"];
                gvGrupYetki.DataBind();
                ViewState["gvGrupYetki"] = Session["GrupYetki"];
            }
        }

        protected void gvGrupYetki_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (gvGrupYetki.Rows.Count > 1)
                {
                    foreach (GridViewRow row in gvGrupYetki.Rows)
                    {
                        if (row.RowIndex == gvGrupYetki.SelectedIndex)
                            row.ToolTip = string.Empty;
                        else
                        {
                            KutucuklariDisableYap();
                            Session["GuncellenenGrupYetki"] = null;
                            Session["GuncellenenGrupYetki"] = uygulamaYetkiServis.GrupYetkiGetirbyID(Convert.ToInt64(gvGrupYetki.DataKeys[gvGrupYetki.SelectedIndex].Values[0]));
                            ddlFonksiyonYeni.SelectedIndex = ddlFonksiyonYeni.Items.IndexOf(ddlFonksiyonYeni.Items.FindByValue(((GrupYetki)Session["GuncellenenGrupYetki"]).FonksiyonID.ToString()));
                            ddlGrup.SelectedIndex = ddlGrup.Items.IndexOf(ddlGrup.Items.FindByValue(((GrupYetki)Session["GuncellenenGrupYetki"]).GrupID.ToString()));
                        }
                    }
                }
                else
                {
                    KutucuklariDisableYap();
                    Session["GuncellenenGrupYetki"] = null;
                    Session["GuncellenenGrupYetki"] = uygulamaYetkiServis.GrupYetkiGetirbyID(Convert.ToInt64(gvGrupYetki.DataKeys[gvGrupYetki.SelectedIndex].Values[0]));
                    ddlFonksiyonYeni.SelectedIndex = ddlFonksiyonYeni.Items.IndexOf(ddlFonksiyonYeni.Items.FindByValue(((GrupYetki)Session["GuncellenenGrupYetki"]).FonksiyonID.ToString()));
                    ddlGrup.SelectedIndex = ddlGrup.Items.IndexOf(ddlGrup.Items.FindByValue(((GrupYetki)Session["GuncellenenGrupYetki"]).GrupID.ToString()));
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["YetkiServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void gvGrupYetki_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                if (ViewState["gvGrupYetki"] != null)
                {
                    gvGrupYetki.DataSource = ViewState["gvGrupYetki"];
                    gvGrupYetki.PageIndex = e.NewPageIndex;
                }
                else
                    gvGrupYetki.DataSource = null;
                gvGrupYetki.DataBind();
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void btnEkle_Click(object sender, EventArgs e)
        {
            try
            {
                gvGrupYetki.SelectedIndex = -1;
                ddlFonksiyonYeni.SelectedIndex = 0;
                ddlGrup.SelectedIndex = 0;
                KutucuklariEnableYap();
                Session["GuncellenenGrupYetki"] = null;
                btnKaydet.Visible = true;
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void btnGuncelle_Click(object sender, EventArgs e)
        {
            try
            {
                if (Session["GuncellenenGrupYetki"] != null)
                {
                    KutucuklariEnableYap();
                    btnKaydet.Visible = true;
                }
                else
                {
                    KutucuklariDisableYap();
                    btnKaydet.Visible = false;
                    MesajVer("Güncellemek İstediğiniz Grup Yetkiyi Seçip Lütfen Tekrar Deneyiniz.");
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void btnKaydet_Click(object sender, EventArgs e)
        {
            try
            {
                if (ddlGrup.SelectedIndex != 0 &&
                ddlFonksiyonYeni.SelectedIndex != 0)
                {
                    if (Session["GuncellenenGrupYetki"] == null)
                    {
                        if (!uygulamaYetkiServis.GrupYetkiVarMiKontrolYeni(Convert.ToInt64(ddlGrup.SelectedValue), ddlFonksiyonYeni.SelectedItem.Text))
                        {
                            Session["GuncellenenGrupYetki"] = new GrupYetki();
                            ((GrupYetki)Session["GuncellenenGrupYetki"]).FonksiyonAdi = ddlFonksiyonYeni.SelectedItem.Text;
                            ((GrupYetki)Session["GuncellenenGrupYetki"]).FonksiyonID = Convert.ToInt64(ddlFonksiyonYeni.SelectedValue);
                            ((GrupYetki)Session["GuncellenenGrupYetki"]).GrupAdi = ddlGrup.SelectedItem.Text;
                            ((GrupYetki)Session["GuncellenenGrupYetki"]).GrupID = Convert.ToInt64(ddlGrup.SelectedValue);
                            Session["GuncellenenGrupYetki"] = uygulamaYetkiServis.GrupYetkiKaydet(((GrupYetki)Session["GuncellenenGrupYetki"]));
                            uygulamaYetkiServis.YetkilendirmeLogKaydet("GrupYetkiKaydet", ((GrupYetki)Session["GuncellenenGrupYetki"]), null, null, ((Kullanici)Session["kullanici"]).ID);
                            GrupYetkiTablosuDoldur();
                            btnKaydet.Visible = false;
                        }
                        else
                        {
                            btnKaydet.Visible = false;
                            MesajVer("Kaydetmek İstediğiniz Grup Yetki Sistemde Mevcuttur.");
                        }
                    }
                    else
                        if (Session["GuncellenenGrupYetki"] != null)
                        {
                            Session["GuncellenenGrupYetkiGuncellenmedenOncesi"] = Session["GuncellenenGrupYetki"];
                            ((GrupYetki)Session["GuncellenenGrupYetki"]).FonksiyonAdi = ddlFonksiyonYeni.SelectedItem.Text;
                            ((GrupYetki)Session["GuncellenenGrupYetki"]).FonksiyonID = Convert.ToInt64(ddlFonksiyonYeni.SelectedValue);
                            ((GrupYetki)Session["GuncellenenGrupYetki"]).GrupAdi = ddlGrup.SelectedItem.Text;
                            ((GrupYetki)Session["GuncellenenGrupYetki"]).GrupID = Convert.ToInt64(ddlGrup.SelectedValue);
                            Session["GuncellenenGrupYetki"] = uygulamaYetkiServis.GrupYetkiGuncelle(((GrupYetki)Session["GuncellenenGrupYetki"]));
                            uygulamaYetkiServis.YetkilendirmeLogKaydet("GrupYetkiGuncelle", ((GrupYetki)Session["GuncellenenGrupYetkiGuncellenmedenOncesi"]), ((GrupYetki)Session["GuncellenenGrupYetki"]), null, ((Kullanici)Session["kullanici"]).ID);
                            GrupYetkiTablosuDoldur();
                            btnKaydet.Visible = false;
                        }
                    KutucuklariDisableYap();
                }
                else
                    MesajVer("Grup Yetki Bilgilerini Eksiksiz Girip Lütfen Tekrar Deneyiniz.");
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["YetkiServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
                btnKaydet.Visible = false;
            }
        }

        protected void btnSil_Click(object sender, EventArgs e)
        {
            try
            {
                if (Session["GuncellenenGrupYetki"] != null)
                {
                    if (uygulamaYetkiServis.GrupYetkiSil((GrupYetki)Session["GuncellenenGrupYetki"]))
                    {
                        uygulamaYetkiServis.YetkilendirmeLogKaydet("GrupYetkiSil", (GrupYetki)Session["GuncellenenGrupYetki"], null, null, ((Kullanici)Session["kullanici"]).ID);
                        Session["GuncellenenGrupYetki"] = null;
                        gvGrupYetki.SelectedIndex = -1;
                        GrupYetkiTablosuDoldur();
                        ddlFonksiyonYeni.SelectedIndex = 0;
                        ddlGrup.SelectedIndex = 0;
                    }
                    else
                        MesajVer("Seçilen Grup Yetki Silinemedi.");
                }
                else
                    MesajVer("Silmek İstediğiniz Grup Yetkiyi Seçip Lütfen Tekrar Deneyiniz.");
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["YetkiServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void GrupCombosuDoldur()
        {
            try
            {
                ddlGrup.DataTextField = "Adi";
                ddlGrup.DataValueField = "ID";
                Grup grup = new Grup();
                grup.ID = 0;
                grup.Adi = "Lütfen seçiniz.";
                List<Grup> grupList = new List<Grup>();
                grupList.Add(grup);
                grupList.AddRange(uygulamaYetkiServis.GrupGetir().ToList());
                ddlGrup.DataSource = grupList;
                ddlGrup.DataBind();
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["YetkiServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void FonksiyonCombosuDoldur()
        {
            try
            {
                ddlFonksiyonYeni.DataTextField = "Adi";
                ddlFonksiyonYeni.DataValueField = "ID";
                Fonksiyon fonksiyon = new Fonksiyon();
                fonksiyon.ID = 0;
                fonksiyon.Adi = "Lütfen seçiniz.";
                List<Fonksiyon> fonksiyonList = new List<Fonksiyon>();
                fonksiyonList.Add(fonksiyon);
                fonksiyonList.AddRange(uygulamaYetkiServis.FonksiyonGetir().ToList<Fonksiyon>());
                ddlFonksiyonYeni.DataSource = fonksiyonList;
                ddlFonksiyonYeni.DataBind();
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["YetkiServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void KutucuklariDisableYap()
        {
            try
            {
                ddlFonksiyonYeni.Enabled = false;
                ddlGrup.Enabled = false;
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void KutucuklariEnableYap()
        {
            try
            {
                ddlFonksiyonYeni.Enabled = true;
                ddlGrup.Enabled = true;
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void SatirIsaretle(GridViewRowEventArgs e)
        {
            try
            {
                //mause gridin üzerine geldiğinde satırlar işaretlensin diye yaptım
                if (e.Row.RowType != DataControlRowType.DataRow)
                    return;
                // eger yaratilan satir farkliysa data satirindan buradan cik 
                e.Row.Attributes.Add("onmouseover", "this.originalstyle=this.style.backgroundColor;this.style.backgroundColor='#F0FFFF'");
                // mouse overina bu stil attribute'ini ekle 
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalstyle;");
                // mouse out ise eski stile don
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvGrupYetki_RowCreated(object sender, GridViewRowEventArgs e)
        {
            SatirIsaretle(e);
        }

        protected void gvGrupYetki_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.Header)
                {
                    e.Row.Cells[2].Text = "Grup Adı";
                    e.Row.Cells[3].Text = "Fonksiyon Adı";
                }
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(gvGrupYetki, "Select$" + e.Row.RowIndex);
                    e.Row.ToolTip = "Click to select this row.";
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void MesajVer(string mesaj)
        {
            ClientScript.RegisterStartupScript(this.GetType(), " Uyarı.. ", "ShowPopup('" + mesaj + "');", true);
        }
    }
}
